package 进制转换.统计最大组的数目;

import java.util.Arrays;
import java.util.HashMap;

/**
 *
 */
public class tjzdzdsm {
    public static void main(String[] args) {
        System.out.println("===="+countLargestGroup(24));
    }


    public static int countLargestGroup(int n) {
        int ans = 0, max = 1;
        int[] count = new int[n +  1];// 统计数位和有多少
        int[] sum = new int[n + 1]; //计算1-n各个元素的数位和，例如数字i的数位和是sum[i / 10] + i % 10

        for(int i = 1; i <= n; i++){
            sum[i] = sum[i / 10] + i % 10;
            count[sum[i]]++;
            if(count[sum[i]] > max)
                max = count[sum[i]];
        }
        System.out.println(Arrays.toString(count));
        System.out.println(max);
//        System.out.println(Arrays.toString(sum));
        for(int num : count) {
            System.out.println("num "+num+" ans "+ans);
           if (num == max){
               num = 1;
           }else {
               num = 0;
           }

            ans = ans + num;

        }

        return ans;
    }
//    public static int countLargestGroup(int n) {
//
//        if (n < 10){
//            return n;
//        }
//        int count = 0;
//        for (int i = 1; i <= n; i++) {
////            System.out.println("当前 i"+i);
//            for (int j = 1; j <= n; j++) {
////                System.out.println("-当前 j"+j);
//                if (i == addDigits(j)){
//                    System.out.println("匹配到"+j+"和"+i+"数位和相等");
//                    ++count;
//                }
//            }
//        }
//
//        return count;
//    }
//    public static int addDigits(int num) {
//        while (num / 10 != 0){
//            int r1 = num % 10;
//            int r2 = num / 10;
//
//            Integer or1Default = map.getOrDefault(r1, 0);
//            Integer or2Default = map.getOrDefault(r2, 0);
//            if (or1Default > 1 || or2Default > 1){
//                return -1;
//            }
//            map.put(r1, ++or1Default);
//            map.put(r2, ++or2Default);
//            num = r1 +r2;
//        }
//        return num;
//    }
}
